package com.xgh.explore;

/**
 * @ClassName MyArray
 * @Description
 * @Author xinggh
 * @Date 2020/6/16 10:02
 * @Version 1.0
 **/
public class MyArray {

    /**
     * 寻找数组的中心索引
     * 我们是这样定义数组 中心索引 的：数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
     * <p>
     * 如果数组不存在中心索引，那么我们应该返回 -1。如果数组有多个中心索引，那么我们应该返回最靠近左边的那一个。
     * <p>
     * 输入：
     * nums = [1, 7, 3, 6, 5, 6]
     * 输出：3
     * 解释：
     * 索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11)，与右侧数之和 (5 + 6 = 11) 相等。
     * 同时, 3 也是第一个符合要求的中心索引。
     *
     * @param nums
     * @return
     */
    public static int pivotIndex(int[] nums) {
        int lsum = 0;
        int sum = 0;
        for (int n : nums) {
            sum += n;
        }

        for (int i = 0; i < nums.length; i++) {
            if (lsum == sum - nums[i] - lsum) {
                return i;
            }
            lsum += nums[i];
        }
        return -1;
    }

    /**
     * 给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。
     *
     * @param nums
     * @param target
     * @return
     */
    public static int searchInsert(int[] nums, int target) {
        if (target < nums[0]) {
            return 0;
        }
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] == target || (nums[i] > target && nums[i - 1] < target)) {
                return i;
            }
        }
        return nums.length;
    }

    /**
     * @param strs
     * @return
     */
    public static String longestCommonPrefix(String[] strs) {
        if (strs.length == 1) {
            return strs[0];
        }
        if (strs.length == 0) {
            return "";
        }
        String prefix = getPrefix(strs[0], strs[1]);
        for (int i = 2; i < strs.length; i++) {
            String prefix1 = getPrefix(prefix, strs[i]);
            prefix = prefix1;
        }
        return prefix;
    }

    public static String getPrefix(String s1, String s2) {
        StringBuilder sb = new StringBuilder();
        int i = 0;
        while (i < s1.length() && i < s2.length()) {
            if (s1.charAt(i) == s2.charAt(i)) {
                sb.append(s1.charAt(i));
                i++;
            } else {
                break;
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        // int nums[] = {-1, -1, -1, -1, -1, 0};
        int nums[] = {1, 3, 5, 6};
        int ta = 0;
        System.out.println(
                searchInsert(nums, ta)
        );
        //System.out.println(pivotIndex(nums));

   /*     String s1 = "Hello World";
        System.out.println("s1 is \"" + s1 + "\"");
        String s2 = s1;
        System.out.println(s1 == s2);
        System.out.println(s1 == "Hello World");
        char c = s1.charAt(5);
        System.out.println(s1);*/

        String[] strs = {"flower", "flow", "flight"};
        System.out.println(longestCommonPrefix(strs));
    }
}
